from abc import ABC, abstractmethod

# Component
class Component(ABC):
    @abstractmethod
    def sampleOperation(self):
        pass

# ConcreteComponent
class ConcreteComponent(Component):
    def sampleOperation(self):
        print("ConcreteComponent operation")

# Decorator
class Decorator(Component):
    def __init__(self, component: Component):
        self._component = component

    def sampleOperation(self):
        self._component.sampleOperation()
        self.addBehavior()

    def addBehavior(self):
        print("Decorator added behavior")

# ConcreteDecoratorA
class ConcreteDecoratorA(Decorator):
    def addBehavior(self):
        print("ConcreteDecoratorA added behavior")

# ConcreteDecoratorB
class ConcreteDecoratorB(Decorator):
    def addBehavior(self):
        print("ConcreteDecoratorB added behavior")

# Usage
component = ConcreteComponent()
decoratorA = ConcreteDecoratorA(component)
decoratorB = ConcreteDecoratorB(decoratorA)
decoratorB.sampleOperation()